package com.cloudshadow.platform.assembly.security;

import com.alibaba.fastjson.JSONObject;
import com.cloudshadow.platform.assembly.security.model.ClientModelBase;
import com.cloudshadow.platform.infrastrcture.context.ClientDataContext;

/**
 * 这个类必须被继承,用于线程中获取用户信息
 * 
 * @author shenmy14613
 *
 * @param <T>
 * @param <K>
 */
public abstract class ContextService {

	/**
	 * 设置用户信息，可以被重写
	 * 
	 * @param identity
	 */
	public void setClientSession(ClientSession identity) {
		ClientDataContext.setClient(identity.getClient());
	}

	/**
	 * 获取用户entity对象
	 * 
	 * @return
	 */
	public <T extends ClientModelBase> T getClientEntity() {
		return JSONObject.toJavaObject(ClientDataContext.getClient(), getEntityClass());
	}

	public abstract <T extends ClientModelBase> Class<T> getEntityClass();

}
